package com.base.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.base.po.voip.Sotre;
import com.base.po.voip.Users;
import com.base.service.SotreService;
import com.base.service.UsersService;
import com.base.utils.Page;

/**
 * 商圈店铺管理服务端
 * 
 * @author f
 *
 */
@Controller
@RequestMapping("/admin")
public class index_Sotre {

	@Autowired
	private SotreService sotreService; // 商圈信息
	@Autowired
	private UsersService usersService; // 代理商信息

	/**
	 * 商圈信息首页
	 * 
	 * @param request       参数
	 * @param currentPageNo 当前页
	 * @param grade         优先级 0-全部 1-普通 2-精选 3-会员
	 * @param status        状态 1-审核完成 2-待审核
	 * @param submobile     手机号码
	 * @param sotrename     店铺名称
	 * @param appname       应用名称
	 * @param username      代理商名称
	 * @param shopname      商家名称
	 * @return ModelAndView
	 * @throws Exception
	 */
	@RequestMapping("/sotreIndex")
	public ModelAndView sotreIndex(HttpServletRequest request, Integer currentPageNo, Integer grade, Integer status,
			String submobile, String sotrename, String appname, String username, String shopname) throws Exception {
		String userid = (String) request.getSession().getAttribute("adminUserId"); // 登录的用户ID
		if (userid == null) return new ModelAndView("jsp/loginCheck"); // 未登录
		Map<String, Object> map = new HashMap<>(); // 存储数据对象
		// 设置分页 获取内容
		Page page = new Page(); // 实例化分页
		if (currentPageNo != null) page.setCurrentPageNo(currentPageNo); // 设置当前页 主页不设置
		List<Sotre> sotre = null; // 商圈内容集合
		// 判断登录权限
		switch ((int) request.getSession().getAttribute("adminUsergrade")) {
		case 0: // ADMIN用户显示 全部
			userid = null; // 把userid赋值为空 不进行break 之后进行查找商家下的所有内容 便是全部
		case 2: // 商家用户显示 商家下的用户
			page.setRecordTotal(sotreService.countByShopAll(userid, submobile, sotrename, appname, username, shopname,
					status, grade)); // 设置总条数
			sotre = sotreService.selectByShopAll(page, userid, submobile, sotrename, appname, username, shopname,
					status, grade); // 赋值集合内容
			break;
		case 1: // 代理商用户显示 本代理商和本代理商下的代理商以及商家下的用户
			page.setRecordTotal(sotreService.countByParentAll(userid, submobile, sotrename, appname, username, shopname,
					status, grade)); // 设置总条数
			sotre = sotreService.selectByParentAll(page, userid, submobile, sotrename, appname, username, shopname,
					status, grade); // 赋值集合内容
			break;
		}
		map.put("sotre", sotre); // 商圈对象
		map.put("submobile", submobile); // 用户手机号
		map.put("sotrename", sotrename); // 店铺名称
		map.put("appname", appname); // 应用名称
		map.put("username", username); // 代理商名称
		map.put("shopname", shopname); // 商家名称
		map.put("status", status); // 审核状态
		map.put("grade", grade); // 优先级
		map.put("pages", page); // 分页
		return new ModelAndView("jsp/index_Sotre", map);
	}

	// 跳转添加商圈信息
	@RequestMapping("/addSotre")
	public ModelAndView addSotre() throws Exception {
		return new ModelAndView("jsp/add_Sotre", "users", usersService.selectByUsers(new Users(1, true)));
	}

	// 跳转修改商圈信息
	@RequestMapping("/updateSotre")
	public ModelAndView updateSotre(String id, Integer currentPageNo, Integer grade, Integer status, String submobile,
			String sotrename, String appname, String username, String shopname) throws Exception {
		Map<String, Object> map = new HashMap<>(); // 存储数据对象
		map.put("sotre", sotreService.selectByPrimaryKey(id)); // 商圈对象
		map.put("users", usersService.selectByUsers(new Users(1, true))); // 应用/商家对象
		map.put("currentPageNo", currentPageNo); // 当前页
		map.put("status", status); // 审核状态
		map.put("grade", grade); // 优先级
		map.put("submobile", submobile); // 用户手机号
		map.put("sotrename", sotrename); // 店铺名称
		map.put("appname", appname); // 应用名称
		map.put("username", username); // 代理商名称
		map.put("shopname", shopname); // 商家名称
		return new ModelAndView("jsp/update_Sotre", map);
	}
}
